package com.yootk.test.ftp;

import com.yootk.common.util.FTPConnection;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

/**
 * FTP移动文件
 */
public class FTPMoveFile {

    public static void main(String[] args) throws Exception {
        String oldPath = "/home/ftpadmin/ftp/upload/"; // 文件存储的原始目录，该目录存在
        String newPath = "/home/ftpadmin/ftp/upload/muyan/"; // 文件存储的目标目录，该目录不存在
        String fileName = "muyan_yootk.png"; // 要移动的文件名称
        FTPClient client = FTPConnection.getFTPClient(); // 获取FTP连接
        client.enterLocalPassiveMode(); // 采用被动模式
        client.setFileType(FTPClient.BINARY_FILE_TYPE); // 采用二进制传输
        client.setBufferSize(2048); // 设置上传的缓存大小
        if (!client.changeWorkingDirectory(newPath)) {  // 目标的路径不存在
            client.makeDirectory(newPath); // 创建目标目录
        }
        // 如果要想移动文件，则一定要切换到移动的原始目录之中
        if (client.changeWorkingDirectory(oldPath)) {   // 移动的源目录存在
            FTPFile[] files = client.listFiles(); // 获取全部的目录文件
            for (FTPFile file : files) {    // 文件的列表
                if (file.getName().trim().equals(fileName)) {  // 可以查找到当前文件
                    client.rename(new String(file.getName().getBytes("UTF-8"), "ISO-8859-1"), newPath + new String(file.getName().getBytes("UTF-8"), "ISO-8859-1"));
                }
            }
        }
        client.logout(); // 注销
    }
}
